library(dada2); packageVersion("dada2") # the dada2 pipeline
[1] ‘1.21.0’
library(ShortRead); packageVersion("ShortRead") # dada2 depends on this
[1] ‘1.52.0’
library(dplyr); packageVersion("dplyr") # for manipulating data
[1] ‘1.0.8’
library(tidyr); packageVersion("tidyr") # for creating the final graph at the end of the pipeline
[1] ‘1.2.0’
#library(Hmisc); packageVersion("Hmisc") # for creating the final graph at the end of the pipeline

library(ggplot2); packageVersion("ggplot2") # for creating the final graph at the end of the pipeline
[1] ‘3.3.5’
library(plotly); packageVersion("plotly") # enables creation of interactive graphs, especially helpful for quality plots
[1] ‘4.10.0’
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("UMI4Cats") # for demultiplexing in R
'getOption("repos")' replaces Bioconductor standard repositories, see
'?repositories' for details

replacement repositories:
    CRAN: https://cran.rstudio.com/

Bioconductor version 3.13 (BiocManager 1.30.16), R 4.1.1 (2021-08-10)
Warning: package(s) not installed when version(s) same as current; use `force = TRUE` to
  re-install: 'UMI4Cats'
Old packages: 'RcppArmadillo'
Update all/some/none? [a/s/n]: 
n

//Users/gordoncuster/Bioinformatics_software/idemp-master

preprocess.fp
[1] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess"
flags <- paste("-b", barcode.fp, "-I1", I1.fp, "-R1", R1.fp, "-R2", R2.fp, "-o", demultiplex.fp) 
system2(idemp, args = flags) 
barcode:    /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/16S/testLopezUribe_BeeBread_Barcodes_16s.txt
Index reads:    /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/16S/Undetermined_S0_L001_I1_001.fastq.gz
Read1 reads:    /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/16S/Undetermined_S0_L001_R1_001.fastq.gz
Read2 reads:    /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/16S/Undetermined_S0_L001_R2_001.fastq.gz
Output folder:  /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed

GCTTATTGCTTAN   Bel_CON3037_B
GACCATGTAGTAN   Spr_CON3017_B
CTTCGCGGATGTN   Sla_IPM2070_B
TGAGCGCACGCGN   Dal_CF1051_B
CATGAGACTGTAN   Sum_CF4005_B
TTACCCGCACAGN   Bel_CF3045_A
AAGATTTGCAGCN   Sla_CON2061_A
AACCGATGTACCN   Ber_CF2006_A
GCCTTACGATAGN   Dal_CON1057_A
ACGACCTACGCTN   Bel_Control_A
ATGGCCTGACTAN   Bel_CON3039_B
GCAAGCTGTCTCN   Spr_CON3019_Be2
ATCACATTCTCCN   Sla_IPM2071_B
CGAGTATACAACN   Dal_CF1052_B
CCAGGGACTTCTN   Sum_CF4006_B
ACAAGTGCTGCTN   Bel_CF3047_A
CACTCTCCGGCAN   Sla_CON2063_A
ATTAATGAAGCGN   Ber_CF2007_A
ACCGATTAGGTAN   Dal_CON1058_A
ATCGATCCACAGN   Spr_Control_A
TCAATGACCGCAN   Bel_IPM3042_B
TATCTTCCTGAAN   Spr_IPM3023_B
AACGTCCTGTGCN   Ber_IPM2001_B
TAAGCGTCTCGAN   Dal_IPM1054_B
GAGGTATTCTGAN   Sum_CON4010_B
CGTAAGATGCCTN   Spr_CF3013_A
GGAGGGTACCGTN   Sla_CF2065_A
TCAAGATCAAGAN   Ber_CON2010_A
TGCAACTTGCAGN   Sum_IPM4001_A
TACTAGATATTAN   Sla_Control_A
CTTTATGTGTCAN   Bel_IPM3044_B
GGTACTGTACCAN   Spr_IPM3024_B
AAGGTGGACAAGN   Ber_IPM2002_B
ACGCTCCCATCGN   Dal_IPM1055_B
AGAGCTCCTCTGN   Sum_CON4011_B
GCGTACGGGTGAN   Spr_CF3016_A
AAGCGTACATTGN   Sla_CF2066_A
CTGTTACAGCGAN   Ber_CON2011_A
CCGAGTACAATCN   Sum_IPM4002_A
GGTCTCCTACAGN   Ber_Control_A
GGTCGAATTGCTN   Bel_CF3045_B
TCAACTATGTCTN   Sla_CON2061_B
TATAGAAGAATGN   Ber_CF2006_B
CTAATATTTGAAN   Dal_CON1057_B
GAGCATTACATGN   Bel_CON3037_A
ATATACCTGCGGN   Spr_CON3017_A
CAATATTCAATAN   Sla_IPM2070_A
AAGTGCTTGGTAN   Dal_CF1051_A
GCGGAGCACGTCN   Sum_CF4005_A
TCCCGCCTACGCN   Dal_Control_A
TTACCACATCTAN   Bel_CF3047_B
TGGCATGTTGGTN   Sla_CON2063_B
GTGTGCTAACGTN   Ber_CF2007_B
TGAGTTCGGTCCN   Dal_CON1058_B
AGACAAGCTTCCN   Bel_CON3039_A
TATAATCCGAGGN   Spr_CON3019_A
ATAAAGAGGAGGN   Sla_IPM2071_A
AGTTTGCGAGATN   Dal_CF1052_A
AAGCTAAAGCTAN   Sum_CF4006_A
ACCCTGGGTATCN   Sum_Control_A1
ATGCAACTCGAAN   Spr_CF3013_B
ATCATCTCGGCGN   Sla_CF2065_B
GTCTATACATATN   Ber_CON2010_B
CTCAGGAGACTTN   Sum_IPM4001_B
CATCCTGAGCAAN   Bel_IPM3042_A
GTGACTAGTGATN   Spr_IPM3023_A
TCATGTGAACGAN   Ber_IPM2001_A
CACTTGCTCTCTN   Dal_IPM1054_A
ACAATCCCGAGTN   Sum_CON4010_A
GTTCCCAACGGTN   Dilution
Water   Aliquot
TTGGTGCCTGTGN   Spr_CF3016_B
ATTGGGACATAAN   Sla_CF2066_B
AGTTCGGCATTGN   Ber_CON2011_Be2
TCTGATCGAGGTN   Sum_IPM4002_B
GAATGACGTTTGN   Bel_IPM3044_A
GAAGGAAAGTAGN   Spr_IPM3024_A
AACTGGAACCCTN   Ber_IPM2002_A
AGGAATACTCACN   Dal_IPM1055_A
CCATCGACGCTCN   Sum_CON4011_A
GTCACCAATCCGN   NTC
barcodes:   81

Pairwise barcode edit distance:
0
7 0
8 8 0
10 8 7 0
7 7 6 8 0
8 8 7 5 9 0
8 8 9 7 8 9 0
9 5 8 8 7 8 6 0
6 6 7 8 8 7 9 8 0
8 7 8 6 8 8 6 6 7 0
8 6 8 8 5 7 8 8 7 6 0
7 7 8 8 7 9 7 7 9 7 7 0
7 8 9 8 7 8 7 6 9 6 7 7 0
8 8 10 7 8 9 6 7 7 7 8 7 8 0
8 8 7 7 6 10 9 8 9 7 7 6 8 7 0
7 7 8 7 6 9 6 7 9 5 7 5 6 8 5 0
8 7 8 8 7 8 7 8 7 6 7 8 8 7 9 7 0
8 7 8 6 8 7 6 7 8 7 8 9 7 8 9 6 8 0
6 4 8 9 7 9 7 6 6 6 7 9 8 8 9 8 7 7 0
9 8 9 6 8 6 6 6 7 6 7 9 6 7 9 8 7 6 7 0
8 7 9 6 6 8 8 8 8 7 7 7 7 8 6 5 5 5 7 6 0
7 7 8 8 6 8 8 9 7 8 6 9 8 9 10 8 5 8 8 6 7 0
8 7 7 8 7 9 6 6 8 5 7 7 7 9 8 6 6 8 7 6 8 6 0
8 7 7 5 6 7 7 7 9 8 7 5 7 8 7 7 7 8 8 8 6 6 6 0
5 7 10 7 6 10 6 9 8 8 7 7 7 6 6 8 7 9 7 8 9 6 6 6 0
7 8 7 8 6 9 8 8 8 7 8 5 7 7 7 6 9 6 9 8 8 9 8 8 8 0
9 8 8 5 7 8 8 8 9 7 9 7 10 6 6 7 9 8 8 9 7 9 8 6 6 6 0
9 7 9 7 7 7 7 8 8 8 9 7 8 6 8 7 7 7 6 6 5 7 9 5 7 8 8 0
7 7 9 7 7 7 6 9 7 8 8 6 8 8 8 7 8 8 8 7 7 7 8 7 8 6 8 6 0
7 5 8 10 6 8 8 7 7 8 7 7 8 7 8 8 8 8 6 8 7 7 8 7 7 8 10 5 8 0
5 6 7 10 6 8 8 8 7 9 8 7 7 8 9 8 6 6 7 8 7 8 7 7 7 6 10 9 8 7 0
7 6 9 7 8 7 8 7 8 7 6 6 8 6 8 8 7 6 9 8 7 8 7 8 7 6 5 9 7 6 6 0
10 8 9 7 8 7 6 7 8 8 6 8 10 6 8 8 9 8 9 6 9 9 8 7 7 9 7 7 8 8 9 8 0
9 9 8 7 9 7 7 8 6 6 8 7 7 8 8 8 6 8 8 5 8 8 6 7 9 8 8 9 8 9 9 9 7 0
9 8 9 5 7 7 7 9 8 5 7 6 7 8 7 6 8 9 8 5 9 7 5 6 5 7 7 9 7 8 10 8 7 5 0
5 7 6 8 7 9 9 9 6 8 8 8 10 9 9 8 8 9 7 9 8 9 6 8 6 7 7 9 8 8 6 6 9 8 8 0
8 7 8 6 7 7 7 7 6 6 7 7 8 7 7 8 9 8 8 6 9 8 5 5 6 9 6 8 8 7 10 9 5 5 5 6 0
7 9 7 7 6 8 7 9 7 8 7 9 9 6 8 8 6 7 7 7 6 7 8 8 7 6 8 7 7 8 6 7 8 7 9 6 7 0
8 8 8 7 6 9 7 6 7 6 9 7 9 4 6 7 9 8 6 7 8 10 8 9 8 8 7 6 9 7 9 8 7 6 7 8 5 7 0
8 8 8 8 9 6 8 9 6 8 7 9 8 7 10 9 6 9 10 5 9 6 8 9 7 8 7 9 6 9 9 5 7 6 5 8 8 8 9 0
6 8 7 7 7 10 8 7 8 7 8 7 7 9 7 7 9 8 7 8 8 8 8 9 7 6 7 9 6 8 8 7 8 8 9 7 7 9 8 7 0
8 7 8 7 8 9 9 6 8 5 8 5 6 8 6 5 7 7 7 9 6 8 7 7 7 6 9 7 5 7 6 7 10 8 7 8 8 9 7 9 6 0
9 8 7 8 6 7 8 7 8 9 7 8 9 8 9 9 10 6 8 7 8 8 9 7 8 7 9 6 8 5 9 9 7 9 8 9 6 9 6 9 8 8 0
7 7 9 10 6 9 6 9 9 9 9 8 7 6 8 8 7 8 7 9 7 5 9 7 6 7 10 7 7 6 5 8 9 10 9 8 9 7 9 9 8 7 7 0
6 5 9 6 8 7 6 7 5 8 7 7 8 5 8 8 9 8 6 6 9 7 8 8 5 8 7 8 6 8 9 7 6 6 6 8 4 7 6 6 7 8 7 8 0
8 9 8 8 7 6 6 9 9 6 6 7 7 8 9 7 7 6 9 6 7 6 6 7 8 7 9 9 6 8 7 8 9 7 6 7 8 6 9 6 8 8 7 7 8 0
6 6 9 10 6 9 7 9 7 8 8 7 8 5 8 8 6 7 7 8 7 7 8 7 6 7 9 4 8 6 7 8 8 8 8 9 7 7 6 8 9 6 7 4 6 9 0
7 7 9 8 6 10 7 7 8 7 5 8 9 9 7 5 6 9 5 9 8 7 6 6 7 9 8 8 8 7 8 7 7 8 7 6 7 8 9 9 7 9 9 7 8 7 7 0
7 7 8 6 6 9 8 7 8 6 8 6 9 7 6 8 9 9 6 8 8 10 8 8 8 7 6 7 9 9 9 8 7 7 7 6 7 8 5 9 8 7 9 10 6 9 9 8 0
10 8 7 6 9 6 9 6 8 5 7 7 7 7 8 8 7 10 7 7 7 8 6 6 9 10 8 7 7 8 10 8 10 6 8 9 9 8 7 6 8 7 9 10 9 7 10 9 7 0
7 6 7 7 7 5 10 7 9 7 6 8 6 8 7 9 8 8 7 8 7 7 8 6 8 8 9 7 7 5 8 7 10 7 6 9 7 6 8 9 8 6 7 7 8 7 8 8 8 7 0
7 6 7 8 9 9 7 8 8 8 7 7 8 9 8 7 9 8 7 9 8 7 8 7 7 7 7 8 6 8 8 7 10 9 8 8 8 9 9 9 6 7 9 7 7 8 9 6 8 8 9 0
8 8 6 6 8 8 8 9 8 6 6 7 10 8 8 7 9 7 8 8 9 8 8 7 7 7 5 8 8 9 9 6 8 7 8 7 8 6 8 6 6 8 8 10 7 7 9 6 6 7 8 7 0
8 9 8 6 7 8 7 8 7 8 8 7 6 7 8 7 7 8 7 9 7 8 6 7 8 8 7 8 8 9 8 6 8 8 6 6 8 8 6 8 8 6 9 9 8 9 8 7 7 9 8 6 8 0
8 8 9 8 8 8 7 6 9 7 8 4 5 8 7 6 9 8 8 8 8 9 6 8 8 6 8 9 6 7 8 7 10 7 7 9 8 9 8 8 7 8 7 9 8 7 9 8 8 8 7 7 9 7 0
9 8 8 8 8 6 7 9 8 8 8 9 8 8 11 8 7 6 9 6 7 5 7 7 7 8 9 6 7 7 8 9 9 7 7 9 8 7 8 7 9 8 6 7 7 5 7 8 9 8 8 8 9 8 9 0
10 8 7 7 8 8 7 7 8 9 9 9 9 9 9 7 10 5 8 8 8 9 9 8 10 7 9 6 8 8 9 9 7 10 9 8 8 8 9 10 10 8 5 7 8 5 9 9 9 9 9 9 9 9 8 5 0
8 8 6 8 9 8 5 9 6 8 7 9 10 7 10 7 7 7 8 8 9 7 8 8 7 8 8 8 8 9 7 8 7 8 9 7 8 7 8 6 8 9 8 8 8 8 7 7 9 10 9 8 6 8 9 7 8 0
6 6 9 7 7 9 7 7 7 6 6 7 8 7 8 7 7 7 6 8 8 8 8 7 6 7 8 6 8 6 9 8 6 7 6 7 5 5 8 9 7 7 7 8 7 8 7 6 9 9 6 8 7 9 7 8 8 8 0
8 6 8 10 8 8 7 5 7 7 7 7 8 9 7 8 7 9 6 9 9 9 7 9 10 9 8 10 9 7 7 8 7 6 8 8 8 10 7 9 9 7 9 10 8 9 9 7 8 6 9 9 9 8 7 9 8 7 8 0
8 7 9 8 5 8 8 8 8 6 6 8 6 9 9 7 8 7 7 6 7 6 9 5 7 9 8 6 4 8 8 8 8 7 7 8 7 6 9 8 8 7 8 6 8 6 8 7 7 8 6 7 8 8 7 7 7 8 6 9 0
9 7 7 6 8 7 6 8 8 6 7 8 6 9 9 6 5 6 6 5 6 6 6 7 8 8 10 8 6 10 7 9 8 6 6 8 8 7 10 7 8 6 9 7 7 5 8 7 8 8 8 7 8 6 8 5 7 8 8 8 5 0
6 6 8 10 8 8 9 9 4 8 8 8 7 5 8 8 8 8 7 5 7 7 9 10 7 8 8 7 8 6 7 6 8 8 9 8 7 7 6 6 7 6 7 7 6 8 6 8 8 9 6 8 6 9 8 8 9 6 7 8 8 8 0
7 8 6 8 5 8 10 8 8 9 7 7 7 7 4 7 9 8 8 8 8 10 9 8 8 6 7 7 9 7 7 9 8 10 9 8 8 8 6 9 8 7 6 8 8 9 9 10 6 8 7 9 7 9 8 9 7 7 8 7 9 8 7 0
8 6 7 9 7 7 8 7 8 7 5 7 8 7 10 8 5 7 7 7 7 6 6 8 9 7 9 7 7 8 6 6 7 8 9 7 8 6 8 7 9 8 8 7 7 7 7 7 9 8 7 9 8 9 9 8 7 8 6 6 7 7 8 6 0
7 7 8 8 7 8 8 9 7 6 7 7 8 8 8 7 9 8 7 8 8 7 8 8 7 7 7 9 7 6 8 7 9 9 8 5 8 6 7 7 6 6 7 6 7 8 8 7 8 9 8 6 5 8 7 8 7 7 7 8 6 7 6 7 8 0
8 7 7 6 5 7 7 8 8 8 7 7 8 7 8 7 8 6 8 8 4 7 9 6 7 8 7 4 7 7 6 7 6 8 9 7 9 5 8 9 9 7 6 8 8 8 7 8 7 6 7 7 6 8 10 8 7 8 7 8 7 6 8 6 5 8 0
7 8 7 8 7 8 8 7 7 6 7 6 6 8 6 5 6 9 9 8 7 7 6 7 7 7 9 9 8 6 6 8 8 7 6 9 8 8 8 9 8 6 9 9 8 8 7 7 8 8 8 8 7 7 6 10 11 7 8 6 8 7 7 7 7 8 8 0
9 7 6 8 8 8 7 8 8 6 7 7 8 9 8 5 6 7 7 5 6 7 6 8 8 9 8 6 7 9 9 9 8 6 7 8 9 8 8 8 9 7 9 8 8 6 7 7 8 8 9 8 8 8 9 4 6 6 8 8 6 6 7 8 6 8 8 8 0
9 8 6 7 8 6 9 10 7 6 8 9 8 9 10 10 8 8 8 8 9 9 10 9 9 9 7 9 9 9 9 8 9 6 8 8 9 7 9 5 6 8 9 10 8 6 10 9 8 7 7 8 4 9 10 8 9 6 8 9 8 8 7 8 8 6 8 9 7 0
13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 0
7 9 6 6 6 8 9 10 9 9 6 9 10 10 8 7 9 7 9 7 7 6 5 7 7 8 7 9 7 9 7 8 7 7 6 7 6 7 8 7 8 9 8 8 8 6 10 6 6 7 7 7 7 7 10 7 9 8 9 8 8 7 8 7 9 7 8 7 8 8 13 0
8 9 7 9 6 8 9 8 8 9 6 10 9 8 6 9 9 7 8 6 8 8 9 8 8 9 8 7 8 6 8 8 5 8 9 9 6 7 8 9 9 10 7 8 8 9 8 8 8 9 6 9 8 9 9 10 8 6 8 7 6 9 6 7 7 8 7 8 10 9 13 7 0
7 8 6 7 8 7 7 9 7 8 7 9 8 9 9 8 7 7 8 7 9 9 7 8 8 8 8 10 8 7 8 7 6 5 6 7 5 8 9 7 6 9 8 10 7 8 8 8 8 8 7 8 8 6 7 8 8 6 8 7 8 7 7 8 8 8 9 8 8 7 13 6 5 0
7 8 6 7 7 8 8 8 7 6 8 9 9 9 9 8 8 7 5 6 7 7 8 8 9 8 8 5 8 7 8 9 9 8 9 7 10 6 8 8 8 7 7 8 9 7 9 8 6 7 8 6 6 7 9 4 7 6 8 9 8 7 6 7 8 6 6 8 6 7 13 7 9 9 0
7 7 8 7 7 9 8 7 5 8 8 6 7 9 7 8 9 7 9 8 7 9 6 6 7 7 8 9 8 7 8 8 8 9 7 6 6 9 8 8 8 7 6 7 6 7 8 7 8 9 7 8 8 7 7 8 7 8 8 8 9 8 7 8 9 7 8 8 7 9 13 7 8 7 8 0
9 6 9 7 6 9 7 7 7 9 8 8 10 7 7 9 10 7 7 8 7 10 8 8 7 8 7 7 8 7 10 8 6 9 9 8 6 9 8 9 8 8 6 9 7 9 8 7 7 10 8 8 8 8 8 9 7 8 5 9 8 10 8 7 8 7 7 10 9 9 13 8 7 8 9 5 0
9 9 9 8 7 8 8 6 9 7 8 8 8 9 6 7 8 7 9 7 7 10 8 9 8 7 6 9 9 7 10 7 6 8 8 10 7 8 8 9 7 7 7 10 9 9 9 8 7 8 9 10 7 9 7 9 9 8 6 7 7 9 8 6 8 9 7 5 8 8 13 8 7 8 8 8 8 0
8 8 11 8 7 9 6 8 8 6 6 7 5 5 8 7 9 7 7 6 7 8 8 7 5 7 7 8 7 7 8 7 7 7 6 9 7 8 6 6 8 8 8 7 7 7 7 8 7 9 8 7 8 7 6 8 8 8 7 9 5 7 7 8 9 6 9 8 7 10 13 9 7 9 10 7 6 8 0
8 7 7 6 6 8 9 7 7 5 7 6 7 7 5 7 7 8 7 7 6 8 8 7 9 7 8 8 8 8 8 9 9 8 7 8 7 7 6 9 7 6 7 9 8 8 7 9 6 7 7 8 8 8 7 9 8 8 7 7 8 7 9 6 6 9 7 6 7 8 13 9 9 7 6 6 9 7 8 0
9 8 8 7 9 7 10 8 7 7 8 7 5 9 8 9 8 7 9 6 7 8 8 7 8 7 8 7 7 8 9 7 9 6 7 9 9 8 8 5 7 6 8 9 7 7 9 11 8 7 5 9 7 8 7 7 8 9 9 10 8 6 7 7 8 6 8 8 8 5 13 9 9 7 9 8 8 7 8 8 0

Closest barcodes, editDistance=4
ACCGATTAGGTAN:GACCATGTAGTAN
CCGAGTACAATCN:CGAGTATACAACN
GAGCATTACATGN:AAGCGTACATTGN
CAATATTCAATAN:TCAAGATCAAGAN
CAATATTCAATAN:CTAATATTTGAAN
AGACAAGCTTCCN:GCAAGCTGTCTCN
ATGCAACTCGAAN:TGCAACTTGCAGN
GTCTATACATATN:GCCTTACGATAGN
CTCAGGAGACTTN:CCAGGGACTTCTN
TCATGTGAACGAN:TCAATGACCGCAN
TCATGTGAACGAN:TCAAGATCAAGAN
ACAATCCCGAGTN:TATAATCCGAGGN
GTTCCCAACGGTN:GTGTGCTAACGTN
TCTGATCGAGGTN:TATAATCCGAGGN

Read names are same:    1
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
Done matching barcodes
0   GCTTATTGCTTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3037_B.fastq.gz
1   GACCATGTAGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3017_B.fastq.gz
2   CTTCGCGGATGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2070_B.fastq.gz
3   TGAGCGCACGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1051_B.fastq.gz
4   CATGAGACTGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4005_B.fastq.gz
5   TTACCCGCACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3045_A.fastq.gz
6   AAGATTTGCAGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2061_A.fastq.gz
7   AACCGATGTACCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2006_A.fastq.gz
8   GCCTTACGATAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1057_A.fastq.gz
9   ACGACCTACGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_Control_A.fastq.gz
10  ATGGCCTGACTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3039_B.fastq.gz
11  GCAAGCTGTCTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3019_Be2.fastq.gz
12  ATCACATTCTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2071_B.fastq.gz
13  CGAGTATACAACN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1052_B.fastq.gz
14  CCAGGGACTTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4006_B.fastq.gz
15  ACAAGTGCTGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3047_A.fastq.gz
16  CACTCTCCGGCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2063_A.fastq.gz
17  ATTAATGAAGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2007_A.fastq.gz
18  ACCGATTAGGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1058_A.fastq.gz
19  ATCGATCCACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_Control_A.fastq.gz
20  TCAATGACCGCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3042_B.fastq.gz
21  TATCTTCCTGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3023_B.fastq.gz
22  AACGTCCTGTGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2001_B.fastq.gz
23  TAAGCGTCTCGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1054_B.fastq.gz
24  GAGGTATTCTGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4010_B.fastq.gz
25  CGTAAGATGCCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3013_A.fastq.gz
26  GGAGGGTACCGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2065_A.fastq.gz
27  TCAAGATCAAGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2010_A.fastq.gz
28  TGCAACTTGCAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4001_A.fastq.gz
29  TACTAGATATTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_Control_A.fastq.gz
30  CTTTATGTGTCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3044_B.fastq.gz
31  GGTACTGTACCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3024_B.fastq.gz
32  AAGGTGGACAAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2002_B.fastq.gz
33  ACGCTCCCATCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1055_B.fastq.gz
34  AGAGCTCCTCTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4011_B.fastq.gz
35  GCGTACGGGTGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3016_A.fastq.gz
36  AAGCGTACATTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2066_A.fastq.gz
37  CTGTTACAGCGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2011_A.fastq.gz
38  CCGAGTACAATCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4002_A.fastq.gz
39  GGTCTCCTACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_Control_A.fastq.gz
40  GGTCGAATTGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3045_B.fastq.gz
41  TCAACTATGTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2061_B.fastq.gz
42  TATAGAAGAATGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2006_B.fastq.gz
43  CTAATATTTGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1057_B.fastq.gz
44  GAGCATTACATGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3037_A.fastq.gz
45  ATATACCTGCGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3017_A.fastq.gz
46  CAATATTCAATAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2070_A.fastq.gz
47  AAGTGCTTGGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1051_A.fastq.gz
48  GCGGAGCACGTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4005_A.fastq.gz
49  TCCCGCCTACGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_Control_A.fastq.gz
50  TTACCACATCTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3047_B.fastq.gz
51  TGGCATGTTGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2063_B.fastq.gz
52  GTGTGCTAACGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2007_B.fastq.gz
53  TGAGTTCGGTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1058_B.fastq.gz
54  AGACAAGCTTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3039_A.fastq.gz
55  TATAATCCGAGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3019_A.fastq.gz
56  ATAAAGAGGAGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2071_A.fastq.gz
57  AGTTTGCGAGATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1052_A.fastq.gz
58  AAGCTAAAGCTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4006_A.fastq.gz
59  ACCCTGGGTATCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_Control_A1.fastq.gz
60  ATGCAACTCGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3013_B.fastq.gz
61  ATCATCTCGGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2065_B.fastq.gz
62  GTCTATACATATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2010_B.fastq.gz
63  CTCAGGAGACTTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4001_B.fastq.gz
64  CATCCTGAGCAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3042_A.fastq.gz
65  GTGACTAGTGATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3023_A.fastq.gz
66  TCATGTGAACGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2001_A.fastq.gz
67  CACTTGCTCTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1054_A.fastq.gz
68  ACAATCCCGAGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4010_A.fastq.gz
69  GTTCCCAACGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dilution.fastq.gz
71  TTGGTGCCTGTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3016_B.fastq.gz
72  ATTGGGACATAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2066_B.fastq.gz
73  AGTTCGGCATTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2011_Be2.fastq.gz
74  TCTGATCGAGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4002_B.fastq.gz
75  GAATGACGTTTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3044_A.fastq.gz
76  GAAGGAAAGTAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3024_A.fastq.gz
77  AACTGGAACCCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2002_A.fastq.gz
78  AGGAATACTCACN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1055_A.fastq.gz
79  CCATCGACGCTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4011_A.fastq.gz
80  GTCACCAATCCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_NTC.fastq.gz
81  undecoded   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R1_001.fastq.gz_unsigned.fastq.gz
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
0   GCTTATTGCTTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3037_B.fastq.gz
1   GACCATGTAGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3017_B.fastq.gz
2   CTTCGCGGATGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2070_B.fastq.gz
3   TGAGCGCACGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1051_B.fastq.gz
4   CATGAGACTGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4005_B.fastq.gz
5   TTACCCGCACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3045_A.fastq.gz
6   AAGATTTGCAGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2061_A.fastq.gz
7   AACCGATGTACCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2006_A.fastq.gz
8   GCCTTACGATAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1057_A.fastq.gz
9   ACGACCTACGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_Control_A.fastq.gz
10  ATGGCCTGACTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3039_B.fastq.gz
11  GCAAGCTGTCTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3019_Be2.fastq.gz
12  ATCACATTCTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2071_B.fastq.gz
13  CGAGTATACAACN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1052_B.fastq.gz
14  CCAGGGACTTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4006_B.fastq.gz
15  ACAAGTGCTGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3047_A.fastq.gz
16  CACTCTCCGGCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2063_A.fastq.gz
17  ATTAATGAAGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2007_A.fastq.gz
18  ACCGATTAGGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1058_A.fastq.gz
19  ATCGATCCACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_Control_A.fastq.gz
20  TCAATGACCGCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3042_B.fastq.gz
21  TATCTTCCTGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3023_B.fastq.gz
22  AACGTCCTGTGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2001_B.fastq.gz
23  TAAGCGTCTCGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1054_B.fastq.gz
24  GAGGTATTCTGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4010_B.fastq.gz
25  CGTAAGATGCCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3013_A.fastq.gz
26  GGAGGGTACCGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2065_A.fastq.gz
27  TCAAGATCAAGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2010_A.fastq.gz
28  TGCAACTTGCAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4001_A.fastq.gz
29  TACTAGATATTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_Control_A.fastq.gz
30  CTTTATGTGTCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3044_B.fastq.gz
31  GGTACTGTACCAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3024_B.fastq.gz
32  AAGGTGGACAAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2002_B.fastq.gz
33  ACGCTCCCATCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1055_B.fastq.gz
34  AGAGCTCCTCTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4011_B.fastq.gz
35  GCGTACGGGTGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3016_A.fastq.gz
36  AAGCGTACATTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2066_A.fastq.gz
37  CTGTTACAGCGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2011_A.fastq.gz
38  CCGAGTACAATCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4002_A.fastq.gz
39  GGTCTCCTACAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_Control_A.fastq.gz
40  GGTCGAATTGCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3045_B.fastq.gz
41  TCAACTATGTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2061_B.fastq.gz
42  TATAGAAGAATGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2006_B.fastq.gz
43  CTAATATTTGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1057_B.fastq.gz
44  GAGCATTACATGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3037_A.fastq.gz
45  ATATACCTGCGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3017_A.fastq.gz
46  CAATATTCAATAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2070_A.fastq.gz
47  AAGTGCTTGGTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1051_A.fastq.gz
48  GCGGAGCACGTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4005_A.fastq.gz
49  TCCCGCCTACGCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_Control_A.fastq.gz
50  TTACCACATCTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3047_B.fastq.gz
51  TGGCATGTTGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2063_B.fastq.gz
52  GTGTGCTAACGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2007_B.fastq.gz
53  TGAGTTCGGTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1058_B.fastq.gz
54  AGACAAGCTTCCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3039_A.fastq.gz
55  TATAATCCGAGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3019_A.fastq.gz
56  ATAAAGAGGAGGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2071_A.fastq.gz
57  AGTTTGCGAGATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1052_A.fastq.gz
58  AAGCTAAAGCTAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4006_A.fastq.gz
59  ACCCTGGGTATCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_Control_A1.fastq.gz
60  ATGCAACTCGAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3013_B.fastq.gz
61  ATCATCTCGGCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2065_B.fastq.gz
62  GTCTATACATATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2010_B.fastq.gz
63  CTCAGGAGACTTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4001_B.fastq.gz
64  CATCCTGAGCAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3042_A.fastq.gz
65  GTGACTAGTGATN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3023_A.fastq.gz
66  TCATGTGAACGAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2001_A.fastq.gz
67  CACTTGCTCTCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1054_A.fastq.gz
68  ACAATCCCGAGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4010_A.fastq.gz
69  GTTCCCAACGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dilution.fastq.gz
71  TTGGTGCCTGTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3016_B.fastq.gz
72  ATTGGGACATAAN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2066_B.fastq.gz
73  AGTTCGGCATTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2011_Be2.fastq.gz
74  TCTGATCGAGGTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4002_B.fastq.gz
75  GAATGACGTTTGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3044_A.fastq.gz
76  GAAGGAAAGTAGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3024_A.fastq.gz
77  AACTGGAACCCTN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2002_A.fastq.gz
78  AGGAATACTCACN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1055_A.fastq.gz
79  CCATCGACGCTCN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4011_A.fastq.gz
80  GTCACCAATCCGN   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_NTC.fastq.gz
81  undecoded   /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/Undetermined_S0_L001_R2_001.fastq.gz_unsigned.fastq.gz
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
11000000
12000000
13000000
14000000
list.files(demultiplex.fp)
  [1] "Undetermined_S0_L001_I1_001.fastq.gz.decode"                   "Undetermined_S0_L001_I1_001.fastq.gz.decode.stat"              "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3045_A.fastq.gz"   
  [4] "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3045_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3047_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CF3047_B.fastq.gz"   
  [7] "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3037_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3037_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3039_A.fastq.gz"  
 [10] "Undetermined_S0_L001_R1_001.fastq.gz_Bel_CON3039_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_Control_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3042_A.fastq.gz"  
 [13] "Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3042_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3044_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Bel_IPM3044_B.fastq.gz"  
 [16] "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2006_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2006_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2007_A.fastq.gz"   
 [19] "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CF2007_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2010_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2010_B.fastq.gz"  
 [22] "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2011_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Ber_CON2011_Be2.fastq.gz" "Undetermined_S0_L001_R1_001.fastq.gz_Ber_Control_A.fastq.gz"  
 [25] "Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2001_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2001_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2002_A.fastq.gz"  
 [28] "Undetermined_S0_L001_R1_001.fastq.gz_Ber_IPM2002_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1051_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1051_B.fastq.gz"   
 [31] "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1052_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CF1052_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1057_A.fastq.gz"  
 [34] "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1057_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1058_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_CON1058_B.fastq.gz"  
 [37] "Undetermined_S0_L001_R1_001.fastq.gz_Dal_Control_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1054_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1054_B.fastq.gz"  
 [40] "Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1055_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dal_IPM1055_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Dilution.fastq.gz"       
 [43] "Undetermined_S0_L001_R1_001.fastq.gz_NTC.fastq.gz"             "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2065_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2065_B.fastq.gz"   
 [46] "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2066_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CF2066_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2061_A.fastq.gz"  
 [49] "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2061_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2063_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sla_CON2063_B.fastq.gz"  
 [52] "Undetermined_S0_L001_R1_001.fastq.gz_Sla_Control_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2070_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2070_B.fastq.gz"  
 [55] "Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2071_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sla_IPM2071_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3013_A.fastq.gz"   
 [58] "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3013_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3016_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CF3016_B.fastq.gz"   
 [61] "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3017_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3017_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3019_A.fastq.gz"  
 [64] "Undetermined_S0_L001_R1_001.fastq.gz_Spr_CON3019_Be2.fastq.gz" "Undetermined_S0_L001_R1_001.fastq.gz_Spr_Control_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3023_A.fastq.gz"  
 [67] "Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3023_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3024_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Spr_IPM3024_B.fastq.gz"  
 [70] "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4005_A.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4005_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4006_A.fastq.gz"   
 [73] "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CF4006_B.fastq.gz"    "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4010_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4010_B.fastq.gz"  
 [76] "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4011_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sum_CON4011_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sum_Control_A1.fastq.gz" 
 [79] "Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4001_A.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4001_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4002_A.fastq.gz"  
 [82] "Undetermined_S0_L001_R1_001.fastq.gz_Sum_IPM4002_B.fastq.gz"   "Undetermined_S0_L001_R1_001.fastq.gz_unsigned.fastq.gz"        "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3045_A.fastq.gz"   
 [85] "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3045_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3047_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CF3047_B.fastq.gz"   
 [88] "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3037_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3037_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3039_A.fastq.gz"  
 [91] "Undetermined_S0_L001_R2_001.fastq.gz_Bel_CON3039_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_Control_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3042_A.fastq.gz"  
 [94] "Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3042_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3044_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Bel_IPM3044_B.fastq.gz"  
 [97] "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2006_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2006_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2007_A.fastq.gz"   
[100] "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CF2007_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2010_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2010_B.fastq.gz"  
[103] "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2011_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Ber_CON2011_Be2.fastq.gz" "Undetermined_S0_L001_R2_001.fastq.gz_Ber_Control_A.fastq.gz"  
[106] "Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2001_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2001_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2002_A.fastq.gz"  
[109] "Undetermined_S0_L001_R2_001.fastq.gz_Ber_IPM2002_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1051_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1051_B.fastq.gz"   
[112] "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1052_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CF1052_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1057_A.fastq.gz"  
[115] "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1057_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1058_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_CON1058_B.fastq.gz"  
[118] "Undetermined_S0_L001_R2_001.fastq.gz_Dal_Control_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1054_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1054_B.fastq.gz"  
[121] "Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1055_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dal_IPM1055_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Dilution.fastq.gz"       
[124] "Undetermined_S0_L001_R2_001.fastq.gz_NTC.fastq.gz"             "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2065_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2065_B.fastq.gz"   
[127] "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2066_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CF2066_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2061_A.fastq.gz"  
[130] "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2061_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2063_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sla_CON2063_B.fastq.gz"  
[133] "Undetermined_S0_L001_R2_001.fastq.gz_Sla_Control_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2070_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2070_B.fastq.gz"  
[136] "Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2071_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sla_IPM2071_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3013_A.fastq.gz"   
[139] "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3013_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3016_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CF3016_B.fastq.gz"   
[142] "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3017_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3017_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3019_A.fastq.gz"  
[145] "Undetermined_S0_L001_R2_001.fastq.gz_Spr_CON3019_Be2.fastq.gz" "Undetermined_S0_L001_R2_001.fastq.gz_Spr_Control_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3023_A.fastq.gz"  
[148] "Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3023_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3024_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Spr_IPM3024_B.fastq.gz"  
[151] "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4005_A.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4005_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4006_A.fastq.gz"   
[154] "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CF4006_B.fastq.gz"    "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4010_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4010_B.fastq.gz"  
[157] "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4011_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sum_CON4011_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sum_Control_A1.fastq.gz" 
[160] "Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4001_A.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4001_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4002_A.fastq.gz"  
[163] "Undetermined_S0_L001_R2_001.fastq.gz_Sum_IPM4002_B.fastq.gz"   "Undetermined_S0_L001_R2_001.fastq.gz_unsigned.fastq.gz"       
fnRs
 [1] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CF3045_A.fastq.gz"   
 [2] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CF3045_B.fastq.gz"   
 [3] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CF3047_A.fastq.gz"   
 [4] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CF3047_B.fastq.gz"   
 [5] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CON3037_A.fastq.gz"  
 [6] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CON3037_B.fastq.gz"  
 [7] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CON3039_A.fastq.gz"  
 [8] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_CON3039_B.fastq.gz"  
 [9] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_Control_A.fastq.gz"  
[10] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_IPM3042_A.fastq.gz"  
[11] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_IPM3042_B.fastq.gz"  
[12] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_IPM3044_A.fastq.gz"  
[13] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Bel_IPM3044_B.fastq.gz"  
[14] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CF2006_A.fastq.gz"   
[15] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CF2006_B.fastq.gz"   
[16] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CF2007_A.fastq.gz"   
[17] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CF2007_B.fastq.gz"   
[18] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CON2010_A.fastq.gz"  
[19] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CON2010_B.fastq.gz"  
[20] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CON2011_A.fastq.gz"  
[21] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_CON2011_Be2.fastq.gz"
[22] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_Control_A.fastq.gz"  
[23] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_IPM2001_A.fastq.gz"  
[24] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_IPM2001_B.fastq.gz"  
[25] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_IPM2002_A.fastq.gz"  
[26] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Ber_IPM2002_B.fastq.gz"  
[27] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CF1051_A.fastq.gz"   
[28] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CF1051_B.fastq.gz"   
[29] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CF1052_A.fastq.gz"   
[30] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CF1052_B.fastq.gz"   
[31] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CON1057_A.fastq.gz"  
[32] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CON1057_B.fastq.gz"  
[33] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CON1058_A.fastq.gz"  
[34] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_CON1058_B.fastq.gz"  
[35] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_Control_A.fastq.gz"  
[36] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_IPM1054_A.fastq.gz"  
[37] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_IPM1054_B.fastq.gz"  
[38] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_IPM1055_A.fastq.gz"  
[39] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dal_IPM1055_B.fastq.gz"  
[40] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Dilution.fastq.gz"       
[41] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_NTC.fastq.gz"            
[42] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CF2065_A.fastq.gz"   
[43] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CF2065_B.fastq.gz"   
[44] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CF2066_A.fastq.gz"   
[45] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CF2066_B.fastq.gz"   
[46] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CON2061_A.fastq.gz"  
[47] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CON2061_B.fastq.gz"  
[48] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CON2063_A.fastq.gz"  
[49] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_CON2063_B.fastq.gz"  
[50] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_Control_A.fastq.gz"  
[51] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_IPM2070_A.fastq.gz"  
[52] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_IPM2070_B.fastq.gz"  
[53] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_IPM2071_A.fastq.gz"  
[54] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sla_IPM2071_B.fastq.gz"  
[55] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CF3013_A.fastq.gz"   
[56] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CF3013_B.fastq.gz"   
[57] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CF3016_A.fastq.gz"   
[58] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CF3016_B.fastq.gz"   
[59] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CON3017_A.fastq.gz"  
[60] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CON3017_B.fastq.gz"  
[61] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CON3019_A.fastq.gz"  
[62] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_CON3019_Be2.fastq.gz"
[63] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_Control_A.fastq.gz"  
[64] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_IPM3023_A.fastq.gz"  
[65] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_IPM3023_B.fastq.gz"  
[66] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_IPM3024_A.fastq.gz"  
[67] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Spr_IPM3024_B.fastq.gz"  
[68] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CF4005_A.fastq.gz"   
[69] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CF4005_B.fastq.gz"   
[70] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CF4006_A.fastq.gz"   
[71] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CF4006_B.fastq.gz"   
[72] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CON4010_A.fastq.gz"  
[73] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CON4010_B.fastq.gz"  
[74] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CON4011_A.fastq.gz"  
[75] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_CON4011_B.fastq.gz"  
[76] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_Control_A1.fastq.gz" 
[77] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_IPM4001_A.fastq.gz"  
[78] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_IPM4001_B.fastq.gz"  
[79] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_IPM4002_A.fastq.gz"  
[80] "/Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/demultiplexed/R2_Sum_IPM4002_B.fastq.gz"  
# Name the N-filtered files to put them in filtN/ subdirectory
fnFs.filtN <- file.path(preprocess.fp, "filtN", basename(fnFs))
fnRs.filtN <- file.path(preprocess.fp, "filtN", basename(fnRs))

# Filter Ns from reads and put them into the filtN directory
filterAndTrim(fnFs, fnFs.filtN, fnRs, fnRs.filtN, maxN = 0, multithread = TRUE) 
Creating output directory: /Users/gordoncuster/Desktop/Quick_Sync/Lopez_Uribe/01_preprocess/filtN
# CHANGE multithread to FALSE on Windows (here and elsewhere in the program)
# Set up the primer sequences to pass along to cutadapt
FWD <- "GTGYCAGCMGCCGCGGTAA"  ## this is 515f
REV <- "GGACTACNVGGGTWTCTAAT"  ## this is 806Br

# Write a function that creates a list of all orientations of the primers
allOrients <- function(primer) {
    # Create all orientations of the input sequence
    require(Biostrings)
    dna <- DNAString(primer)  # The Biostrings works w/ DNAString objects rather than character vectors
    orients <- c(Forward = dna, Complement = complement(dna), Reverse = reverse(dna), 
                 RevComp = reverseComplement(dna))
    return(sapply(orients, toString))  # Convert back to character vector
}

# Save the primer orientations to pass to cutadapt
FWD.orients <- allOrients(FWD)
REV.orients <- allOrients(REV)
FWD.orients
              Forward            Complement               Reverse               RevComp 
"GTGYCAGCMGCCGCGGTAA" "CACRGTCGKCGGCGCCATT" "AATGGCGCCGMCGACYGTG" "TTACCGCGGCKGCTGRCAC" 
##               Forward            Complement               Reverse 
## "GTGYCAGCMGCCGCGGTAA" "CACRGTCGKCGGCGCCATT" "AATGGCGCCGMCGACYGTG" 
##               RevComp 
## "TTACCGCGGCKGCTGRCAC"

# Write a function that counts how many time primers appear in a sequence
primerHits <- function(primer, fn) {
    # Counts number of reads in which the primer is found
    nhits <- vcountPattern(primer, sread(readFastq(fn)), fixed = FALSE)
    return(sum(nhits > 0))
}
rbind(FWD.ForwardReads = sapply(FWD.orients, primerHits, fn = fnFs.filtN[[1]]), 
      FWD.ReverseReads = sapply(FWD.orients, primerHits, fn = fnRs.filtN[[1]]), 
      REV.ForwardReads = sapply(REV.orients, primerHits, fn = fnFs.filtN[[1]]), 
      REV.ReverseReads = sapply(REV.orients, primerHits, fn = fnRs.filtN[[1]]))
                 Forward Complement Reverse RevComp
FWD.ForwardReads       0          0       0       0
FWD.ReverseReads       0          0       0      12
REV.ForwardReads       0          0       0      17
REV.ReverseReads       1          0       0       0
##                  Forward Complement Reverse RevComp
## FWD.ForwardReads       0          0       0       0
## FWD.ReverseReads       0          0       0      12
## REV.ForwardReads       0          0       0      17
## REV.ReverseReads       1          0       0       0
# Create directory to hold the output from cutadapt
if (!dir.exists(trimmed.fp)) dir.create(trimmed.fp)
fnFs.cut <- file.path(trimmed.fp, basename(fnFs))
fnRs.cut <- file.path(trimmed.fp, basename(fnRs))

# Save the reverse complements of the primers to variables
FWD.RC <- dada2:::rc(FWD)
REV.RC <- dada2:::rc(REV)

##  Create the cutadapt flags ##
# Trim FWD and the reverse-complement of REV off of R1 (forward reads)
R1.flags <- paste("-g", FWD, "-a", REV.RC, "--minimum-length 50") 

# Trim REV and the reverse-complement of FWD off of R2 (reverse reads)
R2.flags <- paste("-G", REV, "-A", FWD.RC, "--minimum-length 50") 

# Run Cutadapt
for (i in seq_along(fnFs)) {
    system2(cutadapt, args = c(R1.flags, R2.flags, "-n", 2, # -n 2 required to remove FWD and REV from reads
                               "-o", fnFs.cut[i], "-p", fnRs.cut[i], # output files
                               fnFs.filtN[i], fnRs.filtN[i])) # input files
}

# As a sanity check, we will check for primers in the first cutadapt-ed sample:
rbind(FWD.ForwardReads = sapply(FWD.orients, primerHits, fn = fnFs.cut[[1]]), 
      FWD.ReverseReads = sapply(FWD.orients, primerHits, fn = fnRs.cut[[1]]), 
      REV.ForwardReads = sapply(REV.orients, primerHits, fn = fnFs.cut[[1]]), 
      REV.ReverseReads = sapply(REV.orients, primerHits, fn = fnRs.cut[[1]]))
##                  Forward Complement Reverse RevComp
## FWD.ForwardReads       0          0       0       0
## FWD.ReverseReads       0          0       0       0
## REV.ForwardReads       0          0       0       0
## REV.ReverseReads       0          0       0       0
dir.create(filter.fp)
    subF.fp <- file.path(filter.fp, "preprocessed_F") 
    subR.fp <- file.path(filter.fp, "preprocessed_R") 
dir.create(subF.fp)
dir.create(subR.fp)

# Move R1 and R2 from trimmed to separate forward/reverse sub-directories
fnFs.Q <- file.path(subF.fp,  basename(fnFs)) 
fnRs.Q <- file.path(subR.fp,  basename(fnRs))
file.rename(from = fnFs.cut, to = fnFs.Q)
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [15] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [29] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [43] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [57] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [71] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
file.rename(from = fnRs.cut, to = fnRs.Q)
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [15] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [29] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [43] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [57] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [71] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

# File parsing; create file names and make sure that forward and reverse files match
filtpathF <- file.path(subF.fp, "filtered") # files go into preprocessed_F/filtered/
filtpathR <- file.path(subR.fp, "filtered") # ...
fastqFs <- sort(list.files(subF.fp, pattern="fastq.gz"))
fastqRs <- sort(list.files(subR.fp, pattern="fastq.gz"))
if(length(fastqFs) != length(fastqRs)) stop("Forward and reverse files do not match.")
ggplotly(fwd_qual_plots)

ggplotly(rev_qual_plots)
LS0tCnRpdGxlOiAiMTZTIHByb2NjZXNzaW5nIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0KbGlicmFyeShkYWRhMik7IHBhY2thZ2VWZXJzaW9uKCJkYWRhMiIpICMgdGhlIGRhZGEyIHBpcGVsaW5lCgpsaWJyYXJ5KFNob3J0UmVhZCk7IHBhY2thZ2VWZXJzaW9uKCJTaG9ydFJlYWQiKSAjIGRhZGEyIGRlcGVuZHMgb24gdGhpcwoKbGlicmFyeShkcGx5cik7IHBhY2thZ2VWZXJzaW9uKCJkcGx5ciIpICMgZm9yIG1hbmlwdWxhdGluZyBkYXRhCgpsaWJyYXJ5KHRpZHlyKTsgcGFja2FnZVZlcnNpb24oInRpZHlyIikgIyBmb3IgY3JlYXRpbmcgdGhlIGZpbmFsIGdyYXBoIGF0IHRoZSBlbmQgb2YgdGhlIHBpcGVsaW5lCgojbGlicmFyeShIbWlzYyk7IHBhY2thZ2VWZXJzaW9uKCJIbWlzYyIpICMgZm9yIGNyZWF0aW5nIHRoZSBmaW5hbCBncmFwaCBhdCB0aGUgZW5kIG9mIHRoZSBwaXBlbGluZQoKbGlicmFyeShnZ3Bsb3QyKTsgcGFja2FnZVZlcnNpb24oImdncGxvdDIiKSAjIGZvciBjcmVhdGluZyB0aGUgZmluYWwgZ3JhcGggYXQgdGhlIGVuZCBvZiB0aGUgcGlwZWxpbmUKCmxpYnJhcnkocGxvdGx5KTsgcGFja2FnZVZlcnNpb24oInBsb3RseSIpICMgZW5hYmxlcyBjcmVhdGlvbiBvZiBpbnRlcmFjdGl2ZSBncmFwaHMsIGVzcGVjaWFsbHkgaGVscGZ1bCBmb3IgcXVhbGl0eSBwbG90cwoKI2lmICghcmVxdWlyZU5hbWVzcGFjZSgiQmlvY01hbmFnZXIiLCBxdWlldGx5ID0gVFJVRSkpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJCaW9jTWFuYWdlciIpCgojQmlvY01hbmFnZXI6Omluc3RhbGwoIlVNSTRDYXRzIikgIyBmb3IgZGVtdWx0aXBsZXhpbmcgaW4gUgpgYGAKLy9Vc2Vycy9nb3Jkb25jdXN0ZXIvQmlvaW5mb3JtYXRpY3Nfc29mdHdhcmUvaWRlbXAtbWFzdGVyCgpgYGB7cn0KIyBTZXQgdXAgcGF0aHdheSB0byBpZGVtcCAoZGVtdWx0aXBsZXhpbmcgdG9vbCkgYW5kIHRlc3QKaWRlbXAgPC0gIi8vVXNlcnMvZ29yZG9uY3VzdGVyL0Jpb2luZm9ybWF0aWNzX3NvZnR3YXJlL2lkZW1wLW1hc3Rlci9pZGVtcCIgIyBDSEFOR0UgTUUgaWYgbm90IG9uIG1pY3JvYmUKc3lzdGVtMihpZGVtcCkgIyBDaGVjayB0aGF0IGlkZW1wIGlzIGluIHlvdXIgcGF0aCBhbmQgeW91IGNhbiBydW4gc2hlbGwgY29tbWFuZHMgZnJvbSBSCgojIFNldCB1cCBwYXRod2F5IHRvIGN1dGFkYXB0IChwcmltZXIgdHJpbW1pbmcgdG9vbCkgYW5kIHRlc3QKY3V0YWRhcHQgPC0gIi9Vc2Vycy9nb3Jkb25jdXN0ZXIvLmxvY2FsL2Jpbi9iaW4vY3V0YWRhcHQiICMgQ0hBTkdFIE1FIHRvIHRoZSBjdXRhZGFwdCBwYXRoIG9uIHlvdXIgbWFjaGluZQpzeXN0ZW0yKGN1dGFkYXB0LCBhcmdzID0gIi0tdmVyc2lvbiIpICMgUnVuIHNoZWxsIGNvbW1hbmRzIGZyb20gUgoKIyBTZXQgcGF0aCB0byBzaGFyZWQgZGF0YSBmb2xkZXIgYW5kIGNvbnRlbnRzCmRhdGEuZnAgPC0gKCIvVXNlcnMvZ29yZG9uY3VzdGVyL0Rlc2t0b3AvUXVpY2tfU3luYy9Mb3Blel9VcmliZS8xNlMiKQoKIyBMaXN0IGFsbCBmaWxlcyBpbiBzaGFyZWQgZm9sZGVyIHRvIGNoZWNrIHBhdGgKbGlzdC5maWxlcyhkYXRhLmZwKQojIyBbMV0gIkxvcGV6VXJpYmVfQmVlQnJlYWRfQmFyY29kZUZpbGVfMTZzLmNzdiIgCiMjIFsyXSAiTG9wZXpVcmliZV9CZWVCcmVhZF9NYXBwaW5nRmlsZV8xNnMueGxzeCIKIyMgWzNdICJTYW1wbGVTaGVldC5jc3YiICAgICAgICAgICAgICAgICAgICAgICAgIAojIyBbNF0gIlVuZGV0ZXJtaW5lZF9TMF9MMDAxX0kxXzAwMS5mYXN0cS5neiIgICAgCiMjIFs1XSAiVW5kZXRlcm1pbmVkX1MwX0wwMDFfUjFfMDAxLmZhc3RxLmd6IiAgICAKIyMgWzZdICJVbmRldGVybWluZWRfUzBfTDAwMV9SMl8wMDEuZmFzdHEuZ3oiCgojIFNldCBmaWxlIHBhdGhzIGZvciBiYXJjb2RlcyBmaWxlLCBtYXAgZmlsZSwgYW5kIGZhc3RxcwogICAgIyBCYXJjb2RlcyBuZWVkIHRvIGhhdmUgJ04nIG9uIHRoZSBlbmQgb2YgZWFjaCAxMmJwIHNlcXVlbmNlIGZvciBjb21wYXRhYmlsaXR5CmJhcmNvZGUuZnAgPC0gZmlsZS5wYXRoKGRhdGEuZnAsICJ0ZXN0TG9wZXpVcmliZV9CZWVCcmVhZF9CYXJjb2Rlc18xNnMudHh0IikgIyAudHh0IGZpbGU6IGJhcmNvZGUgPC90PiBzYW1wbGVJRAojbWFwLmZwIDwtIGZpbGUucGF0aChkYXRhLmZwLCAiTG9wZXpVcmliZV9CZWVCcmVhZF9CYXJjb2Rlc18xNnMuY3N2IikKSTEuZnAgPC0gZmlsZS5wYXRoKGRhdGEuZnAsICJVbmRldGVybWluZWRfUzBfTDAwMV9JMV8wMDEuZmFzdHEuZ3oiKSAKUjEuZnAgPC0gZmlsZS5wYXRoKGRhdGEuZnAsICJVbmRldGVybWluZWRfUzBfTDAwMV9SMV8wMDEuZmFzdHEuZ3oiKSAKUjIuZnAgPC0gZmlsZS5wYXRoKGRhdGEuZnAsICJVbmRldGVybWluZWRfUzBfTDAwMV9SMl8wMDEuZmFzdHEuZ3oiKSAKCnByb2plY3QuZnAgPC0gKCIvVXNlcnMvZ29yZG9uY3VzdGVyL0Rlc2t0b3AvUXVpY2tfU3luYy9Mb3Blel9VcmliZSIpICMgQ0hBTkdFIE1FIHRvIHByb2plY3QgZGlyZWN0b3J5OyBkb24ndCBhcHBlbmQgd2l0aCBhICIvIgoKIyBTZXQgdXAgbmFtZXMgb2Ygc3ViIGRpcmVjdG9yaWVzIHRvIHN0YXkgb3JnYW5pemVkCnByZXByb2Nlc3MuZnAgPC0gZmlsZS5wYXRoKHByb2plY3QuZnAsICIwMV9wcmVwcm9jZXNzIikKICAgIGRlbXVsdGlwbGV4LmZwIDwtIGZpbGUucGF0aChwcmVwcm9jZXNzLmZwLCAiZGVtdWx0aXBsZXhlZCIpCiAgICBmaWx0Ti5mcCA8LSBmaWxlLnBhdGgocHJlcHJvY2Vzcy5mcCwgImZpbHROIikKICAgIHRyaW1tZWQuZnAgPC0gZmlsZS5wYXRoKHByZXByb2Nlc3MuZnAsICJ0cmltbWVkIikKZmlsdGVyLmZwIDwtIGZpbGUucGF0aChwcm9qZWN0LmZwLCAiMDJfZmlsdGVyIikgCnRhYmxlLmZwIDwtIGZpbGUucGF0aChwcm9qZWN0LmZwLCAiMDNfdGFibGV0YXgiKSAKYGBgCgpgYGB7cn0KZmxhZ3MgPC0gcGFzdGUoIi1iIiwgYmFyY29kZS5mcCwgIi1JMSIsIEkxLmZwLCAiLVIxIiwgUjEuZnAsICItUjIiLCBSMi5mcCwgIi1vIiwgZGVtdWx0aXBsZXguZnApIApzeXN0ZW0yKGlkZW1wLCBhcmdzID0gZmxhZ3MpIApsaXN0LmZpbGVzKGRlbXVsdGlwbGV4LmZwKQpgYGAKYGBge3J9CiMgQ2hhbmdlIG5hbWVzIG9mIHVuYXNzaWduYWJsZSByZWFkcyBzbyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gZG93bnN0cmVhbSBwcm9jZXNzaW5nCnVuYXNzaWduZWRfMSA8LSBwYXN0ZTAoIm12IiwgIiAiLCBkZW11bHRpcGxleC5mcCwgIi9VbmRldGVybWluZWRfUzBfTDAwMV9SMV8wMDEuZmFzdHEuZ3pfdW5zaWduZWQuZmFzdHEuZ3oiLAogICAgICAgICAgICAgICAgICAgICAgICIgIiwgZGVtdWx0aXBsZXguZnAsICIvVW5hc3NpZ25lZF9yZWFkczEuZmFzdHEuZ3oiKQp1bmFzc2lnbmVkXzIgPC0gcGFzdGUwKCJtdiIsICIgIiwgZGVtdWx0aXBsZXguZnAsICIvVW5kZXRlcm1pbmVkX1MwX0wwMDFfUjJfMDAxLmZhc3RxLmd6X3Vuc2lnbmVkLmZhc3RxLmd6IiwgCiAgICAgICAgICAgICAgICAgICAgICAgIiAiLCBkZW11bHRpcGxleC5mcCwgIi9VbmFzc2lnbmVkX3JlYWRzMi5mYXN0cS5neiIpCnN5c3RlbSh1bmFzc2lnbmVkXzEpCnN5c3RlbSh1bmFzc2lnbmVkXzIpCgojIFJlbmFtZSBmaWxlcyAtIHVzZSBnc3ViIHRvIGdldCBuYW1lcyBpbiBvcmRlciEKUjFfbmFtZXMgPC0gZ3N1YihwYXN0ZTAoZGVtdWx0aXBsZXguZnAsICIvVW5kZXRlcm1pbmVkX1MwX0wwMDFfUjFfMDAxLmZhc3RxLmd6XyIpLCAiIiwgCiAgICAgICAgICAgICAgICAgbGlzdC5maWxlcyhkZW11bHRpcGxleC5mcCwgcGF0dGVybj0iUjEiLCBmdWxsLm5hbWVzID0gVFJVRSkpCmZpbGUucmVuYW1lKGxpc3QuZmlsZXMoZGVtdWx0aXBsZXguZnAsIHBhdHRlcm49IlIxIiwgZnVsbC5uYW1lcyA9IFRSVUUpLCAKICAgICAgICAgICAgcGFzdGUwKGRlbXVsdGlwbGV4LmZwLCAiL1IxXyIsIFIxX25hbWVzKSkKIyMgIFsxXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzE1XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzI5XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzQzXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzU3XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzcxXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCgpSMl9uYW1lcyA8LSBnc3ViKHBhc3RlMChkZW11bHRpcGxleC5mcCwgIi9VbmRldGVybWluZWRfUzBfTDAwMV9SMl8wMDEuZmFzdHEuZ3pfIiksICIiLCAKICAgICAgICAgICAgICAgICBsaXN0LmZpbGVzKGRlbXVsdGlwbGV4LmZwLCBwYXR0ZXJuPSJSMiIsIGZ1bGwubmFtZXMgPSBUUlVFKSkKZmlsZS5yZW5hbWUobGlzdC5maWxlcyhkZW11bHRpcGxleC5mcCwgcGF0dGVybj0iUjIiLCBmdWxsLm5hbWVzID0gVFJVRSksCiAgICAgICAgICAgIHBhc3RlMChkZW11bHRpcGxleC5mcCwgIi9SMl8iLCBSMl9uYW1lcykpCiMjICBbMV0gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCiMjIFsxNV0gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCiMjIFsyOV0gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCiMjIFs0M10gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCiMjIFs1N10gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCiMjIFs3MV0gVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQoKIyBHZXQgZnVsbCBwYXRocyBmb3IgYWxsIGZpbGVzIGFuZCBzYXZlIHRoZW0gZm9yIGRvd25zdHJlYW0gYW5hbHlzZXMKIyBGb3J3YXJkIGFuZCByZXZlcnNlIGZhc3RxIGZpbGVuYW1lcyBoYXZlIGZvcm1hdDogCmZuRnMgPC0gc29ydChsaXN0LmZpbGVzKGRlbXVsdGlwbGV4LmZwLCBwYXR0ZXJuPSJSMV8iLCBmdWxsLm5hbWVzID0gVFJVRSkpCmZuUnMgPC0gc29ydChsaXN0LmZpbGVzKGRlbXVsdGlwbGV4LmZwLCBwYXR0ZXJuPSJSMl8iLCBmdWxsLm5hbWVzID0gVFJVRSkpCmBgYAoKYGBge3J9CiMgTmFtZSB0aGUgTi1maWx0ZXJlZCBmaWxlcyB0byBwdXQgdGhlbSBpbiBmaWx0Ti8gc3ViZGlyZWN0b3J5CmZuRnMuZmlsdE4gPC0gZmlsZS5wYXRoKHByZXByb2Nlc3MuZnAsICJmaWx0TiIsIGJhc2VuYW1lKGZuRnMpKQpmblJzLmZpbHROIDwtIGZpbGUucGF0aChwcmVwcm9jZXNzLmZwLCAiZmlsdE4iLCBiYXNlbmFtZShmblJzKSkKCiMgRmlsdGVyIE5zIGZyb20gcmVhZHMgYW5kIHB1dCB0aGVtIGludG8gdGhlIGZpbHROIGRpcmVjdG9yeQpmaWx0ZXJBbmRUcmltKGZuRnMsIGZuRnMuZmlsdE4sIGZuUnMsIGZuUnMuZmlsdE4sIG1heE4gPSAwLCBtdWx0aXRocmVhZCA9IFRSVUUpIAojIENIQU5HRSBtdWx0aXRocmVhZCB0byBGQUxTRSBvbiBXaW5kb3dzIChoZXJlIGFuZCBlbHNld2hlcmUgaW4gdGhlIHByb2dyYW0pCmBgYAoKYGBge3J9CiMgU2V0IHVwIHRoZSBwcmltZXIgc2VxdWVuY2VzIHRvIHBhc3MgYWxvbmcgdG8gY3V0YWRhcHQKRldEIDwtICJHVEdZQ0FHQ01HQ0NHQ0dHVEFBIiAgIyMgdGhpcyBpcyA1MTVmClJFViA8LSAiR0dBQ1RBQ05WR0dHVFdUQ1RBQVQiICAjIyB0aGlzIGlzIDgwNkJyCgojIFdyaXRlIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbGlzdCBvZiBhbGwgb3JpZW50YXRpb25zIG9mIHRoZSBwcmltZXJzCmFsbE9yaWVudHMgPC0gZnVuY3Rpb24ocHJpbWVyKSB7CiAgICAjIENyZWF0ZSBhbGwgb3JpZW50YXRpb25zIG9mIHRoZSBpbnB1dCBzZXF1ZW5jZQogICAgcmVxdWlyZShCaW9zdHJpbmdzKQogICAgZG5hIDwtIEROQVN0cmluZyhwcmltZXIpICAjIFRoZSBCaW9zdHJpbmdzIHdvcmtzIHcvIEROQVN0cmluZyBvYmplY3RzIHJhdGhlciB0aGFuIGNoYXJhY3RlciB2ZWN0b3JzCiAgICBvcmllbnRzIDwtIGMoRm9yd2FyZCA9IGRuYSwgQ29tcGxlbWVudCA9IGNvbXBsZW1lbnQoZG5hKSwgUmV2ZXJzZSA9IHJldmVyc2UoZG5hKSwgCiAgICAgICAgICAgICAgICAgUmV2Q29tcCA9IHJldmVyc2VDb21wbGVtZW50KGRuYSkpCiAgICByZXR1cm4oc2FwcGx5KG9yaWVudHMsIHRvU3RyaW5nKSkgICMgQ29udmVydCBiYWNrIHRvIGNoYXJhY3RlciB2ZWN0b3IKfQoKIyBTYXZlIHRoZSBwcmltZXIgb3JpZW50YXRpb25zIHRvIHBhc3MgdG8gY3V0YWRhcHQKRldELm9yaWVudHMgPC0gYWxsT3JpZW50cyhGV0QpClJFVi5vcmllbnRzIDwtIGFsbE9yaWVudHMoUkVWKQpGV0Qub3JpZW50cwojIyAgICAgICAgICAgICAgIEZvcndhcmQgICAgICAgICAgICBDb21wbGVtZW50ICAgICAgICAgICAgICAgUmV2ZXJzZSAKIyMgIkdUR1lDQUdDTUdDQ0dDR0dUQUEiICJDQUNSR1RDR0tDR0dDR0NDQVRUIiAiQUFUR0dDR0NDR01DR0FDWUdURyIgCiMjICAgICAgICAgICAgICAgUmV2Q29tcCAKIyMgIlRUQUNDR0NHR0NLR0NUR1JDQUMiCgojIFdyaXRlIGEgZnVuY3Rpb24gdGhhdCBjb3VudHMgaG93IG1hbnkgdGltZSBwcmltZXJzIGFwcGVhciBpbiBhIHNlcXVlbmNlCnByaW1lckhpdHMgPC0gZnVuY3Rpb24ocHJpbWVyLCBmbikgewogICAgIyBDb3VudHMgbnVtYmVyIG9mIHJlYWRzIGluIHdoaWNoIHRoZSBwcmltZXIgaXMgZm91bmQKICAgIG5oaXRzIDwtIHZjb3VudFBhdHRlcm4ocHJpbWVyLCBzcmVhZChyZWFkRmFzdHEoZm4pKSwgZml4ZWQgPSBGQUxTRSkKICAgIHJldHVybihzdW0obmhpdHMgPiAwKSkKfQpgYGAKCmBgYHtyfQpyYmluZChGV0QuRm9yd2FyZFJlYWRzID0gc2FwcGx5KEZXRC5vcmllbnRzLCBwcmltZXJIaXRzLCBmbiA9IGZuRnMuZmlsdE5bWzFdXSksIAogICAgICBGV0QuUmV2ZXJzZVJlYWRzID0gc2FwcGx5KEZXRC5vcmllbnRzLCBwcmltZXJIaXRzLCBmbiA9IGZuUnMuZmlsdE5bWzFdXSksIAogICAgICBSRVYuRm9yd2FyZFJlYWRzID0gc2FwcGx5KFJFVi5vcmllbnRzLCBwcmltZXJIaXRzLCBmbiA9IGZuRnMuZmlsdE5bWzFdXSksIAogICAgICBSRVYuUmV2ZXJzZVJlYWRzID0gc2FwcGx5KFJFVi5vcmllbnRzLCBwcmltZXJIaXRzLCBmbiA9IGZuUnMuZmlsdE5bWzFdXSkpCiMjICAgICAgICAgICAgICAgICAgRm9yd2FyZCBDb21wbGVtZW50IFJldmVyc2UgUmV2Q29tcAojIyBGV0QuRm9yd2FyZFJlYWRzICAgICAgIDAgICAgICAgICAgMCAgICAgICAwICAgICAgIDAKIyMgRldELlJldmVyc2VSZWFkcyAgICAgICAwICAgICAgICAgIDAgICAgICAgMCAgICAgIDEyCiMjIFJFVi5Gb3J3YXJkUmVhZHMgICAgICAgMCAgICAgICAgICAwICAgICAgIDAgICAgICAxNwojIyBSRVYuUmV2ZXJzZVJlYWRzICAgICAgIDEgICAgICAgICAgMCAgICAgICAwICAgICAgIDAKYGBgCgpgYGB7cn0KIyBDcmVhdGUgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIG91dHB1dCBmcm9tIGN1dGFkYXB0CmlmICghZGlyLmV4aXN0cyh0cmltbWVkLmZwKSkgZGlyLmNyZWF0ZSh0cmltbWVkLmZwKQpmbkZzLmN1dCA8LSBmaWxlLnBhdGgodHJpbW1lZC5mcCwgYmFzZW5hbWUoZm5GcykpCmZuUnMuY3V0IDwtIGZpbGUucGF0aCh0cmltbWVkLmZwLCBiYXNlbmFtZShmblJzKSkKCiMgU2F2ZSB0aGUgcmV2ZXJzZSBjb21wbGVtZW50cyBvZiB0aGUgcHJpbWVycyB0byB2YXJpYWJsZXMKRldELlJDIDwtIGRhZGEyOjo6cmMoRldEKQpSRVYuUkMgPC0gZGFkYTI6OjpyYyhSRVYpCgojIyAgQ3JlYXRlIHRoZSBjdXRhZGFwdCBmbGFncyAjIwojIFRyaW0gRldEIGFuZCB0aGUgcmV2ZXJzZS1jb21wbGVtZW50IG9mIFJFViBvZmYgb2YgUjEgKGZvcndhcmQgcmVhZHMpClIxLmZsYWdzIDwtIHBhc3RlKCItZyIsIEZXRCwgIi1hIiwgUkVWLlJDLCAiLS1taW5pbXVtLWxlbmd0aCA1MCIpIAoKIyBUcmltIFJFViBhbmQgdGhlIHJldmVyc2UtY29tcGxlbWVudCBvZiBGV0Qgb2ZmIG9mIFIyIChyZXZlcnNlIHJlYWRzKQpSMi5mbGFncyA8LSBwYXN0ZSgiLUciLCBSRVYsICItQSIsIEZXRC5SQywgIi0tbWluaW11bS1sZW5ndGggNTAiKSAKCiMgUnVuIEN1dGFkYXB0CmZvciAoaSBpbiBzZXFfYWxvbmcoZm5GcykpIHsKICAgIHN5c3RlbTIoY3V0YWRhcHQsIGFyZ3MgPSBjKFIxLmZsYWdzLCBSMi5mbGFncywgIi1uIiwgMiwgIyAtbiAyIHJlcXVpcmVkIHRvIHJlbW92ZSBGV0QgYW5kIFJFViBmcm9tIHJlYWRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8iLCBmbkZzLmN1dFtpXSwgIi1wIiwgZm5Scy5jdXRbaV0sICMgb3V0cHV0IGZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbkZzLmZpbHROW2ldLCBmblJzLmZpbHROW2ldKSkgIyBpbnB1dCBmaWxlcwp9CgojIEFzIGEgc2FuaXR5IGNoZWNrLCB3ZSB3aWxsIGNoZWNrIGZvciBwcmltZXJzIGluIHRoZSBmaXJzdCBjdXRhZGFwdC1lZCBzYW1wbGU6CnJiaW5kKEZXRC5Gb3J3YXJkUmVhZHMgPSBzYXBwbHkoRldELm9yaWVudHMsIHByaW1lckhpdHMsIGZuID0gZm5Gcy5jdXRbWzFdXSksIAogICAgICBGV0QuUmV2ZXJzZVJlYWRzID0gc2FwcGx5KEZXRC5vcmllbnRzLCBwcmltZXJIaXRzLCBmbiA9IGZuUnMuY3V0W1sxXV0pLCAKICAgICAgUkVWLkZvcndhcmRSZWFkcyA9IHNhcHBseShSRVYub3JpZW50cywgcHJpbWVySGl0cywgZm4gPSBmbkZzLmN1dFtbMV1dKSwgCiAgICAgIFJFVi5SZXZlcnNlUmVhZHMgPSBzYXBwbHkoUkVWLm9yaWVudHMsIHByaW1lckhpdHMsIGZuID0gZm5Scy5jdXRbWzFdXSkpCiMjICAgICAgICAgICAgICAgICAgRm9yd2FyZCBDb21wbGVtZW50IFJldmVyc2UgUmV2Q29tcAojIyBGV0QuRm9yd2FyZFJlYWRzICAgICAgIDAgICAgICAgICAgMCAgICAgICAwICAgICAgIDAKIyMgRldELlJldmVyc2VSZWFkcyAgICAgICAwICAgICAgICAgIDAgICAgICAgMCAgICAgICAwCiMjIFJFVi5Gb3J3YXJkUmVhZHMgICAgICAgMCAgICAgICAgICAwICAgICAgIDAgICAgICAgMAojIyBSRVYuUmV2ZXJzZVJlYWRzICAgICAgIDAgICAgICAgICAgMCAgICAgICAwICAgICAgIDAKYGBgCgoKYGBge3J9CmRpci5jcmVhdGUoZmlsdGVyLmZwKQogICAgc3ViRi5mcCA8LSBmaWxlLnBhdGgoZmlsdGVyLmZwLCAicHJlcHJvY2Vzc2VkX0YiKSAKICAgIHN1YlIuZnAgPC0gZmlsZS5wYXRoKGZpbHRlci5mcCwgInByZXByb2Nlc3NlZF9SIikgCmRpci5jcmVhdGUoc3ViRi5mcCkKZGlyLmNyZWF0ZShzdWJSLmZwKQoKIyBNb3ZlIFIxIGFuZCBSMiBmcm9tIHRyaW1tZWQgdG8gc2VwYXJhdGUgZm9yd2FyZC9yZXZlcnNlIHN1Yi1kaXJlY3RvcmllcwpmbkZzLlEgPC0gZmlsZS5wYXRoKHN1YkYuZnAsICBiYXNlbmFtZShmbkZzKSkgCmZuUnMuUSA8LSBmaWxlLnBhdGgoc3ViUi5mcCwgIGJhc2VuYW1lKGZuUnMpKQpmaWxlLnJlbmFtZShmcm9tID0gZm5Gcy5jdXQsIHRvID0gZm5Gcy5RKQojIyAgWzFdIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQojIyBbMTVdIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQojIyBbMjldIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQojIyBbNDNdIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQojIyBbNTddIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRQojIyBbNzFdIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKZmlsZS5yZW5hbWUoZnJvbSA9IGZuUnMuY3V0LCB0byA9IGZuUnMuUSkKIyMgIFsxXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzE1XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzI5XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzQzXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzU3XSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUKIyMgWzcxXSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFIFRSVUUgVFJVRSBUUlVFCgojIEZpbGUgcGFyc2luZzsgY3JlYXRlIGZpbGUgbmFtZXMgYW5kIG1ha2Ugc3VyZSB0aGF0IGZvcndhcmQgYW5kIHJldmVyc2UgZmlsZXMgbWF0Y2gKZmlsdHBhdGhGIDwtIGZpbGUucGF0aChzdWJGLmZwLCAiZmlsdGVyZWQiKSAjIGZpbGVzIGdvIGludG8gcHJlcHJvY2Vzc2VkX0YvZmlsdGVyZWQvCmZpbHRwYXRoUiA8LSBmaWxlLnBhdGgoc3ViUi5mcCwgImZpbHRlcmVkIikgIyAuLi4KZmFzdHFGcyA8LSBzb3J0KGxpc3QuZmlsZXMoc3ViRi5mcCwgcGF0dGVybj0iZmFzdHEuZ3oiKSkKZmFzdHFScyA8LSBzb3J0KGxpc3QuZmlsZXMoc3ViUi5mcCwgcGF0dGVybj0iZmFzdHEuZ3oiKSkKaWYobGVuZ3RoKGZhc3RxRnMpICE9IGxlbmd0aChmYXN0cVJzKSkgc3RvcCgiRm9yd2FyZCBhbmQgcmV2ZXJzZSBmaWxlcyBkbyBub3QgbWF0Y2guIikKYGBgCgpgYGB7cn0KIyBJZiB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgaXMgMjAgb3IgbGVzcywgcGxvdCB0aGVtIGFsbCwgb3RoZXJ3aXNlLCBqdXN0IHBsb3QgMjAgcmFuZG9tbHkgc2VsZWN0ZWQgc2FtcGxlcwppZiggbGVuZ3RoKGZhc3RxRnMpIDw9IDIwKSB7CiAgcGxvdFF1YWxpdHlQcm9maWxlKHBhc3RlMChzdWJGLmZwLCAiLyIsIGZhc3RxRnMpKQogIHBsb3RRdWFsaXR5UHJvZmlsZShwYXN0ZTAoc3ViUi5mcCwgIi8iLCBmYXN0cVJzKSkKfSBlbHNlIHsKICByYW5kX3NhbXBsZXMgPC0gc2FtcGxlKHNpemUgPSAyMCwgMTpsZW5ndGgoZmFzdHFGcykpICMgZ3JhYiAyMCByYW5kb20gc2FtcGxlcyB0byBwbG90CiAgZndkX3F1YWxfcGxvdHMgPC0gcGxvdFF1YWxpdHlQcm9maWxlKHBhc3RlMChzdWJGLmZwLCAiLyIsIGZhc3RxRnNbcmFuZF9zYW1wbGVzXSkpCiAgcmV2X3F1YWxfcGxvdHMgPC0gcGxvdFF1YWxpdHlQcm9maWxlKHBhc3RlMChzdWJSLmZwLCAiLyIsIGZhc3RxUnNbcmFuZF9zYW1wbGVzXSkpCn0KCmZ3ZF9xdWFsX3Bsb3RzCgpnZ3Bsb3RseShmd2RfcXVhbF9wbG90cykKZ2dwbG90bHkocmV2X3F1YWxfcGxvdHMpCmBgYAoK